//
// Created by mi on 2024/5/11.
//
#include <iostream>

using namespace std;

class A {
public:
    A() {
        cout << "A's constructor" << endl;
    }

    ~A() {
        cout << "A's destructor" << endl;
    }

    void show() {
        cout << "num:" << num << endl;
    }

private:
    int num;
};
// placement new : 利用已经存在的内存空间，不需要频繁 new。
// 场景：一个方法里面如果需要 分别调用多个 对象的方法时，每个对象都new ，会产生内存碎片。
// 注意点： 释放资源，需要调用下 析构函数
int main() {
    char mem[100];
    mem[0] = 0x02;
    mem[1] = '\0';
    mem[2] = '\0';
    mem[3] = '\0';
    cout << (void *) mem << endl;
    A *p = new(mem)A;
    cout << p << endl;
    p->show();
    p->~A();
    getchar();
}
